Soft real-time garbage collection for dynamic dispatch languages
نویسنده
چکیده
Common to many high-level, declarative and object oriented languages are the use of dynamic dispatch and garbage collection. Dynamic dispatch is the mechanism by which the selection of a method to run, based on both its signature, and the type of one or more of its arguments, is made. A garbage collector is responsible for efficient ‘recycling’ of memory that is no longer needed, termed ‘garbage’, via a process of automatic deallocation that returns the memory to the program’s allocation area. In this work we investigate various schemes for the efficient implementation of soft real-time multi-generation garbage collection algorithms within dynamic dispatch languages. Our focus is on techniques that reduce and eliminate the synchronisation costs between interleaved user program and collector execution. Furthermore, we work to bound the amount of time for which the user program is paused, while the collector runs, so that real-time constraints can be met. This dissertation describes the implementation of a production uniprocessor collector for Haskell, and evaluates its performance against implementations of existing algorithms. An important focus of our analysis is the effect that the various memory overheads of each scheme have on the performance of the collector. Our experiments demonstrate that closure code specialisation improves performance when it is used to remove dynamic space overheads. A 30% code bloat on top of the baseline generational collector buys us a time-based incremental generational collector whose mutator overhead is 5% when averaged across the nofib benchmark suite. Furthermore, not only does the collector achieve a consistent minimum mutator utilisation of 50% at around 10 to 15 milliseconds, but results, on average, in a performance increase of around 5% at the expense of a small additional amount of memory. The remainder of the dissertation explores the applicability of our collector to other dynamic dispatch languages with a prototype implementation for Java.
منابع مشابه
Garbage Collection and Eciency in Dynamic Metacircular Runtimes
In dynamic object-oriented languages, low-level mechanisms such as just-in-time compilation, object allocation, garbage collection (GC) and method dispatch are oen handled by virtual machines (VMs). VMs are typically implemented using static languages, allowing only few changes at run time. In such systems, the VM is not part of the language and interfaces to memory management or method dispat...
متن کاملCLOS Eiffel and Sather: A Comparison
data types, inheritance, dynamic binding and garbage collection. bstract data types provide encapsulation and inheritance eases reuse. Both promote extensibility and modi ability. These two requirements seem widely accepted and we will not address them further. ynamic binding of functions to function names is one key to the exibility and extensibility of object-oriented languages. It allows new...
متن کاملReliable General Purpose Dynamic Memory Management for Real
Traditional dynamic memory management techniques for imperative programming languages are unsuitable for reliable real-time applications because their worst-case time and space requirements are insufficiently bounded. This is demonstrated by detailed measurements of several real-world workloads. A special hardware-assisted real-time garbage collection system has been designed to facilitate reli...
متن کاملCompiling with Types
Compilers for monomorphic languages, such as C and Pascal, take advantage of types to determine data representations, alignment, calling conventions, and register selection. However, these languages lack important features including polymorphism, abstract datatypes, and garbage collection. In contrast, modern programming languages such as Standard ML (SML), provide all of these features, but ex...
متن کاملLock-free atom garbage collection for multithreaded Prolog
The runtime system of dynamic languages such as Prolog or Lisp and their derivatives contain a symbol table, in Prolog often called the atom table. A simple dynamically resizing hash-table used to be an adequate way to implement this table. As Prolog becomes fashionable for 24 × 7 server processes we need to deal with atom garbage collection and concurrent access to the atom table. Classical lo...
متن کامل